package com.cskaoyan.market.service.impl;

import com.cskaoyan.market.db.domain.MarketAdmin;
import com.cskaoyan.market.db.domain.MarketAdminExample;
import com.cskaoyan.market.db.mapper.MarketAdminMapper;
import com.cskaoyan.market.service.MarketAdminService;
import com.cskaoyan.market.util.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

/**
 * @ClassName MarketAdminServiceImpl
 * @Description: TODO
 * @Author 远志 zhangsong@cskaoyan.onaliyun.com
 * @Date 2023/5/5 11:08
 * @Version V1.0
 **/
public class MarketAdminServiceImpl implements MarketAdminService {

//    绝对不能将 SqlSession 实例的引用放在一个类的静态域，甚至一个类的实例变量也不行。 也绝不能将 SqlSession 实例的引用放在任何类型的托管作用域中，比如 Servlet 框架中的 HttpSession。
    //SqlSession sqlSession;
    @Override
    public List<MarketAdmin> login(String username, String password) {
        //mybatis应该如何使用呢？\
        //获取加载当前类的类加载器，需要使用类加载器来帮助我们获取文件的路径、流
        //从工厂中获取一个sql会话
        SqlSession sqlSession = MyBatisUtil.getSession();
        //执行原理：根据接口以及我们提供的mapper映射文件，程序运行时，动态地帮助我们创建了mapper接口的一个实现类,该实现类里面的每个方法其实就是封装的对应的sql语句
        MarketAdminMapper adminMapper = sqlSession.getMapper(MarketAdminMapper.class);
        //当我们执行当前对象的方法时，那么执行的便是对应的sql语句
        MarketAdminExample marketAdminExample = new MarketAdminExample();
        //select * from market_admin where username = and password =
        marketAdminExample.or().andUsernameEqualTo(username).andPasswordEqualTo(password);
        List<MarketAdmin> marketAdmins = adminMapper.selectByExample(marketAdminExample);
        sqlSession.commit();
        sqlSession.close();
        return marketAdmins;
    }
}
